A Statically Allocated Parallel Functional Language
نویسندگان
چکیده
We describe SAFL, a call-by-value first-order functional language which is syntactically restricted so that storage may be statically allocated to fixed locations. Evaluation of independent sub-expressions happens in parallel—we use locking techniques to protect shared-use function definitions (i.e. to prevent unrestricted parallel accesses to their storage locations for argument and return values). SAFL programs have a well defined notion of total (program and data) size which we refer to as ‘area’; similarly we can talk about execution ‘time’. Fold/unfold transformations on SAFL provide mappings between different points on the area-time spectrum. The space of functions expressible in SAFL is incomparable with the space of primitive recursive functions, in particular interpreters are expressible. The motivation behind SAFL is hardware description and synthesis—we have built an optimising compiler for translating SAFL to silicon.
منابع مشابه
Statically-allocated languages for hardware
Current HDLs present a very low level of abstraction, often requiring the designer to work on details that could be hidden, and leaving little scope for synthesis tools to optimise performance. High-level hardware descriptions thus have a useful rôle in EDA, especially in areas such as rapid development, and reconfigurable computing using devices such as FPGAs. One approach to implementing thes...
متن کاملDagstuhl Seminar on High Level Parallel Programming: Applicability, Analysis and Performance
Parallel Machines for the Polytope Model Nils Ellmenreich Universität Passau, Germany Since scientific algorithms are often easily expressible in a functional language and they are often used for huge problem sizes, we propose an approach to statically parallelize this class of algorithms. The method, polyhedral parallelization, was adapted to the functional setting. For the code generation, we...
متن کاملCompilation of a specialized functional language for massively parallel computers
We propose a parallel specialized language that ensures portable and costpredictable implementations on parallel computers. The language is basically a rst-order, recursion-less, strict functional language equipped with a collection of higher-order functions or skeletons. These skeletons apply on (nested) vectors and can be grouped in four classes: computation, reorganization, communication, an...
متن کاملMemory Reuse Analysis in the Polyhedral
In the context of developing a compiler for a Alpha, a functional data-parallel language based on systems of aane recurrence equations (SAREs), we address the problem of transforming scheduled single-assignment code to multiple assignment code. We show how the polyhedral model allows us to statically compute the lifetimes of program variables, and thus enables us to derive necessary and suucien...
متن کاملSI 413, Unit 9: Implementation Issues
Recall from Unit 6 that there are three ways variable storage can be allocated in a program: statically, on the stack, or from the heap. Statically allocated variables have a lifetime equal to the entire program execution; they never die. Stack allocation is tied to function calls, so anything allocated on the stack (such as local variables within a function) will simply be de-allocated when th...
متن کامل